.TH detect_handledata 3 2019-08-01 "libchardet manuals"
.\" Process with
.\" nroff -man detect_handledata.3
.\" 2019-08-01 JoungKyun.Kim <htt://oops.org>

.SH 이름
detect_handledata, detect_handledata_r \- 문자셋과 정확도를 측정

.SH 사용법
.B "#include <chardet.h>"
.sp
.BI "short detect_handledata (Detect ** handle, const char * inbuf, DetectObj ** outbuf);"
.sp
.BI "short detect_handledata_r (Detect ** handle, const char * inbuf, size_t inlen, DetectObj ** outbuf);"

.SH 설명
.B inbuf
의 문자셋과 정확도를
.B outbuf에 저장한다.

.BI detect_handledata
API는 binary safe 문제로 더이상 사용을 권장하지 않습니다.
.BI detect_handledata_r
API를 이용하십시오.

.SS API 아규먼트
.TP
.B handle
.br
.BI detect_init
api에 의하여 할당된 detect handle resource.

.TP
.B inbuf
.br
문자셋과 정확도를 측정할 입력 문자열

.B inlen
.br
문자셋과 정확도를 측정할 입력 문자열의 길이

.TP
.B outbuf
.br
.B inbuf
의 문자셋과 정확도를 구하여 저장을 한다.
.B outbuf
의 구조는 다음과 같다.

.nf
	typedef struct DetectObject {
		char * encoding;
		float confidence;
	} DetectObj;
.fi

.B outbuf는
.BI detect_obj_init
api를 이용하여 초기화를 한 후에
.BI detect
api로 넘겨줘야 한다.

.SH 반환값
경우에 따라 아래의 상태를 반환한다.

.TP
.B CHARDET_SUCCESS
.br
성공

.TP
.B CHARDET_NO_RESULT
.br
탐지하지 못했을 경우

.TP
.B CHARDET_NULL_OBJECT
.br
.B outbuf
을
.BI chardet_obj_init
api를 이용하여 메모리 할당을 하지 않았을 경우.

.TP
.B CHARDET_OUT_OF_MEMORY
.br
내부 API에서
.B "out of memory"
가 발생했을 경우

.SH 예제
.nf
#include <chardet.h>

int main (void) {
	Detect    * d;
	DetectObj * obj;
	int i, arrayNum;
	char *str[] = {
		"this is ascii",
		"이건 euc-kr 입니다."
	};

	arrayNum = sizeof (str) / sizeof (str[0]);

	if ( (d = detect_init ()) == NULL ) {
		fprintf (stderr, "chardet handle initialize failed\\n");
		return CHARDET_MEM_ALLOCATED_FAIL;
	}

	for ( i=0; i<arrayNum; i++ ) {
		detect_reset (&d);

		if ( (obj = detect_obj_init ()) == NULL ) {
			fprintf (stderr, "Memory Allocation failed\\n");
			return CHARDET_MEM_ALLOCATED_FAIL;
		}

		//switch (detect_handledata (&d, str[i], &obj))
		switch (detect_handledata_r (&d, str[i], strlen (str[i]), &obj))
		{
			case CHARDET_OUT_OF_MEMORY :
				fprintf (stderr, "On handle processing, occured out of memory\\n");
				detect_obj_free (&obj);
				return CHARDET_OUT_OF_MEMORY;
			case CHARDET_NULL_OBJECT :
				fprintf (stderr,
						"2st argument of chardet() is must memory allocation "
						"with detect_obj_init API\\n");
				return CHARDET_NULL_OBJECT;
		}

		# obj-bom 은 CHARDET_BOM_CHECK 상수 지원여부로 지원을 판단할 수 있습니다.
		printf ("encoding: %s, confidence: %f, exists bom: %d\\n", obj->encoding, obj->confidence, obj->bom);
		detect_obj_free (&obj);
	}
	detect_destroy (&d);

    return 0;
}
.fi

.SH 저자
김정균

.SH 버그 리포트
https://github.com/Joungkyun/libchardet/issues

.SH "참고"
detect_obj_init(3), detect_obj_free(3), detect_init(3), detect_reset(3), detect_destroy(3)
